Tom Jakubowski [Mon, 7 Jul 2014 21:46:03 +0000 (14:46 -0700)]
fingerprint: Recover from fs::stat errors
Fingerprinting will fail at an fs::stat() call if there is a broken
symlink in a package's directory. This commit recovers from fs::stat()
errors on broken symlinks by treating them as having mtime 0, which
should not affect the overall fingerprint.
Fix #135
Alex Crichton [Mon, 7 Jul 2014 14:49:14 +0000 (07:49 -0700)]
Add documentation about cargo nightlies
bors [Mon, 7 Jul 2014 13:28:45 +0000 (13:28 +0000)]
auto merge of #131 : alexcrichton/cargo/update-to-master, r=update
Alex Crichton [Mon, 7 Jul 2014 13:27:09 +0000 (06:27 -0700)]
Update with master changes
bors [Mon, 7 Jul 2014 13:18:13 +0000 (13:18 +0000)]
auto merge of #129 : riccieri/cargo/no_more_crate_id, r=alexcrichton
This solves warnings about the use of the deprecated `#![crate_id]` attribute, as well as the deprecated `--crate-file-name` command line option. See rust-lang/rust@
c3ef04be5589901e7f3d9428ebe8f1eb2bdca7e4 for details.
Note that this won't compile on the current master without #128 (or equivalent). I can rebase after a fix lands
bors [Mon, 7 Jul 2014 13:11:04 +0000 (13:11 +0000)]
auto merge of #128 : riccieri/cargo/nightly-fix, r=alexcrichton
On rust-lang/rust@
ed47c479d73fd7b57d3b493e03c74e2932733163 (which landed yesterday via rust-lang/rust@
b8ef5cf1310a7b1e31d0993885d867a6804597ad), `url.path` now returns a `Path`, not a `String`. This one-line patch makes cargo compile again (at least as of rust-lang/rust@
b8ef5cf1310a7b1e31d0993885d867a6804597ad, the `crate_id` changes haven't reached me yet).
Renato Zannon [Mon, 7 Jul 2014 05:22:30 +0000 (02:22 -0300)]
Use --print-file-name instead of --crate-file-name
Renato Zannon [Mon, 7 Jul 2014 05:19:59 +0000 (02:19 -0300)]
Use #![crate_name] instead of #![crate_id]
Renato Zannon [Sun, 6 Jul 2014 23:07:56 +0000 (20:07 -0300)]
url.path is now a Path, not a String
bors [Sat, 5 Jul 2014 23:59:58 +0000 (23:59 +0000)]
auto merge of #123 : alexcrichton/cargo/canonicalize-github-urls, r=wycats
In addition to canonicalizing checkout locations, this canonicalizes packages
for the resolver. This allows two dependencies with slightly different urls
pointing to the same repository to resolve to the same location and package.
Closes #104
Alex Crichton [Sat, 5 Jul 2014 23:44:55 +0000 (16:44 -0700)]
Canonicalize github urls for the resolver
In addition to canonicalizing checkout locations, this canonicalizes packages
for the resolver. This allows two dependencies with slightly different urls
pointing to the same repository to resolve to the same location and package.
Closes #104
bors [Sat, 5 Jul 2014 17:59:56 +0000 (17:59 +0000)]
auto merge of #122 : Benny1992/cargo/master, r=alexcrichton
Tried with [[executable]] and got this:
```bash
FizzBuzz (master*) $ cargo build mri-2.1.2
unused manifest key: executable.name
unused manifest key: executable.path
Fresh fizzbuzz v0.0.1 (file:/home/benny/Web/RustApplications/FizzBuzz)
```
I think ```executable``` section should be ```bin```
Benny [Sat, 5 Jul 2014 13:36:36 +0000 (15:36 +0200)]
use [[bin]] instead of [[executable]]
bors [Fri, 4 Jul 2014 02:44:56 +0000 (02:44 +0000)]
auto merge of #116 : Indiv0/cargo/typofix, r=alexcrichton
Currently, the "single source" error appears like this, with missing whitespace:
lib/game-of-life $ cargo build --verbose
An unknown error occurred
Caused by:
At the moment, Cargo only supports asingle source for a particular package name (piston).
This fixes the typo.
Indiv0 [Fri, 4 Jul 2014 02:29:04 +0000 (22:29 -0400)]
Fix missing space typo in single source error
bors [Thu, 3 Jul 2014 22:31:19 +0000 (22:31 +0000)]
auto merge of #110 : bcobb/cargo/patch-1, r=alexcrichton
Just a small grammar change :smile:
bors [Thu, 3 Jul 2014 22:03:26 +0000 (22:03 +0000)]
auto merge of #106 : alexcrichton/cargo/no-path, r=wycats
This allows usage of cargo without all the executables in your PATH, you only
need to be able to reach the first one.
bors [Thu, 3 Jul 2014 21:51:32 +0000 (21:51 +0000)]
auto merge of #113 : rust-lang/cargo/dev-deps, r=alexcrichton
Development dependencies are included when building or testing the current package, but not packages that depend on it:
```toml
[dev-dependencies.hamcrest]
git = "https://github.com/carllerche/hamcrest-rust.git"
```
Yehuda Katz + Carl Lerche [Thu, 3 Jul 2014 01:13:00 +0000 (18:13 -0700)]
Fix up dev-dependencies
Yehuda Katz + Carl Lerche [Wed, 2 Jul 2014 23:58:25 +0000 (16:58 -0700)]
Added [dev-dependencies] sections to Cargo.toml
If you put a dependency in [dev-dependencies], it will only be
used when building (or testing) your packages, not other packages that
depend on it.
Yehuda Katz + Carl Lerche [Wed, 2 Jul 2014 23:32:24 +0000 (16:32 -0700)]
Add support for non-transitive dependencies
Development and test dependencies should not be transitively pulled in.
For example, if I use rust-curl, and it happens to use hamcrest for
testing, that does not mean I depend on hamcrest.
Björn Steinbrink [Wed, 2 Jul 2014 17:37:15 +0000 (19:37 +0200)]
Update hammer.rs to be compatible with the current rust master
Brian Cobb [Wed, 2 Jul 2014 13:54:46 +0000 (08:54 -0500)]
README uses "its" instead of "it's"
Alex Crichton [Tue, 1 Jul 2014 14:55:19 +0000 (07:55 -0700)]
Enable execution without cargo in PATH
This allows usage of cargo without all the executables in your PATH, you only
need to be able to reach the first one.
bors [Wed, 2 Jul 2014 00:00:00 +0000 (00:00 +0000)]
auto merge of #109 : steveklabnik/cargo/json, r=alexcrichton
Steve Klabnik [Tue, 1 Jul 2014 23:47:56 +0000 (19:47 -0400)]
Fixing deprecated JSON call
bors [Tue, 1 Jul 2014 23:15:01 +0000 (23:15 +0000)]
auto merge of #108 : jdeseno/cargo/clean-submodules, r=alexcrichton
Small change. Use git's `submodule` `foreach` command to cleanup dependencies. I think this way you won't have to remember to update the makefile when a dependency is added or removed.
bors [Tue, 1 Jul 2014 22:49:29 +0000 (22:49 +0000)]
auto merge of #107 : alexcrichton/cargo/issue-102, r=wycats
Closes #102
josh [Tue, 1 Jul 2014 22:49:04 +0000 (07:49 +0900)]
make clean-all via git submodule foreach
Alex Crichton [Tue, 1 Jul 2014 22:40:33 +0000 (15:40 -0700)]
Don't call generic methods on trait objects
Closes #102
bors [Tue, 1 Jul 2014 06:30:02 +0000 (06:30 +0000)]
auto merge of #100 : rust-lang/cargo/meta-packages, r=alexcrichton
This allows a single git repository to have multiple packages contained inside.
* Cargo will look for `Cargo.toml`s located anywhere inside the project.
* Cargo will stop searching once it reaches a submodule, to avoid accidentally exporting someone else's packages. It is still possible to explicitly depend on packages from a submodule using the `path=` syntax on dependencies.
Yehuda Katz [Tue, 1 Jul 2014 06:27:33 +0000 (23:27 -0700)]
Improvements based on the review
bors [Tue, 1 Jul 2014 04:15:54 +0000 (04:15 +0000)]
auto merge of #101 : alexcrichton/cargo/fix-git-1.7, r=wycats
Apparently these versions of git are broken for `git fetch $url`, so we have to
resort to `git fetch origin` and then just pray that it hasn't changed in the
meantime.
Alex Crichton [Tue, 1 Jul 2014 02:37:55 +0000 (19:37 -0700)]
Fix fetch() on git < 1.7.3
Apparently these versions of git are broken for `git fetch $url`, so we have to
resort to `git fetch origin` and then just pray that it hasn't changed in the
meantime.
Yehuda Katz [Tue, 1 Jul 2014 01:36:27 +0000 (18:36 -0700)]
Meta-packages
bors [Mon, 30 Jun 2014 23:15:02 +0000 (23:15 +0000)]
auto merge of #92 : alexcrichton/cargo/dash-j, r=wycats
This commit implements the -j flag in the `cargo_rustc` module, using the
primitives from the other commits. The default parllelism is `os::num_cpus()`.
This change also brings proper freshness propagation instead of the hokey logic
of once something is compiled, "compile everything to the right as well".
Alex Crichton [Sun, 29 Jun 2014 04:30:44 +0000 (21:30 -0700)]
Implement parallel compilation
This commit implements the -j flag in the `cargo_rustc` module, using the
primitives from the previous commits. The default parllelism is `os::num_cpus()`
This change also brings proper freshness propagation instead of the hokey logic
of once something is compiled, "compile everything to the right as well".
Alex Crichton [Sun, 29 Jun 2014 18:03:15 +0000 (11:03 -0700)]
Add a dependency queue abstraction
This data structure is used to track when packages should be built and when they
become buildable. Additionally, it is used to propagate dirtiness throughout the
dependency graph.
Alex Crichton [Sun, 29 Jun 2014 04:23:50 +0000 (21:23 -0700)]
Add a task-pool abstraction
The standard library also provides a task pool, but it's scheduling is not quite
the desired semantics. This task pool instead has all workers contend on a
shared queue to take work from rather than assigning new jobs to specific
workers for forever.
Alex Crichton [Sat, 28 Jun 2014 23:55:02 +0000 (16:55 -0700)]
Make CargoError inherit from Send
Due to a bug in the compiler, this also requires adding `+ Send` any time that
CargoError is mentioned. This change will allow errors to be sent across tasks.
Alex Crichton [Sat, 28 Jun 2014 23:54:16 +0000 (16:54 -0700)]
Accept -j as a command-line parameter
This parameter will be used to control the number of concurrent builds that
cargo has executing.
bors [Mon, 30 Jun 2014 20:20:07 +0000 (20:20 +0000)]
auto merge of #86 : alexcrichton/cargo/issue-77, r=wycats
Instead, keep a table of what we've visited and halt recursion whenever we
re-visit a package.
Alex Crichton [Sat, 28 Jun 2014 20:33:29 +0000 (13:33 -0700)]
Don't infinitely recurse on cyclic path deps
Instead, keep a table of what we've visited and halt recursion whenever we
re-visit a package.
Closes #77
bors [Mon, 30 Jun 2014 20:00:09 +0000 (20:00 +0000)]
auto merge of #87 : alexcrichton/cargo/toml-warnings, r=wycats
Closes #27
bors [Mon, 30 Jun 2014 01:15:09 +0000 (01:15 +0000)]
auto merge of #83 : huonw/cargo/manifest-search, r=alexcrichton,alexcrichton
Huon Wilson [Sat, 28 Jun 2014 09:25:32 +0000 (19:25 +1000)]
Check for the existence of Cargo.toml when reading packages.
Fixes #82.
Huon Wilson [Sat, 28 Jun 2014 09:24:15 +0000 (19:24 +1000)]
Generalise `find_project` to not always search parents.
Also, add a helper around `find_project` that returns `dir/file` rather
than just `dir`.
bors [Sun, 29 Jun 2014 00:15:06 +0000 (00:15 +0000)]
auto merge of #90 : brson/cargo/fix, r=alexcrichton
This reverts commit
09e52c88d8bf729570e642af4e51c3985672b501, reversing
changes made to
bc31d2a23b9ac6b06042e89c9e6ed98474859bf5.
Brian Anderson [Sun, 29 Jun 2014 00:11:13 +0000 (17:11 -0700)]
Revert "Merge pull request #89 from rust-lang/revert-88-fix"
This reverts commit
09e52c88d8bf729570e642af4e51c3985672b501, reversing
changes made to
bc31d2a23b9ac6b06042e89c9e6ed98474859bf5.
Brian Anderson [Sun, 29 Jun 2014 00:09:35 +0000 (17:09 -0700)]
Merge pull request #89 from rust-lang/revert-88-fix
Revert "Basic URL canonicalization. Fixes #84"
Brian Anderson [Sun, 29 Jun 2014 00:09:22 +0000 (17:09 -0700)]
Revert "Basic URL canonicalization. Fixes #84"
Brian Anderson [Sun, 29 Jun 2014 00:08:02 +0000 (17:08 -0700)]
Merge pull request #88 from brson/fix
Basic URL canonicalization. Fixes #84
Brian Anderson [Sun, 29 Jun 2014 00:07:49 +0000 (17:07 -0700)]
Future proof URL canonicalization tests
Brian Anderson [Sat, 28 Jun 2014 23:44:56 +0000 (16:44 -0700)]
Add tests for URL canonicalization and canonicalize .git extensions
Brian Anderson [Sat, 28 Jun 2014 23:18:02 +0000 (16:18 -0700)]
Add a hack to make github urls case-insensitive. Fixes #84
Brian Anderson [Sat, 28 Jun 2014 22:39:48 +0000 (15:39 -0700)]
Account for trailing / in URLs when determining on-disk location. Fixes #84.
No tests because there's no preexisting network tests.
Alex Crichton [Fri, 27 Jun 2014 05:53:05 +0000 (22:53 -0700)]
Warn about unused TOML keys
Closes #27
bors [Sat, 28 Jun 2014 19:43:12 +0000 (19:43 +0000)]
auto merge of #75 : samebchase/cargo/add-help-for-test, r=alexcrichton
bors [Sat, 28 Jun 2014 19:34:40 +0000 (19:34 +0000)]
auto merge of #81 : alexcrichton/cargo/fix-windows, r=wycats
Alex Crichton [Fri, 27 Jun 2014 21:06:50 +0000 (14:06 -0700)]
Use a custom rm_rf to paper over windows git funkiness
bors [Fri, 27 Jun 2014 21:12:07 +0000 (21:12 +0000)]
auto merge of #78 : huonw/cargo/minor-de-.unwrapping, r=alexcrichton
I don't think any of the `.unwrap`s I touched can actually be hit since they all seem to have checks earlier, but reducing the number of calls is always nice and makes the code easier to verify.
I'm not sure if the `,` -> `:` commit is actually correct, I was just working from the surrounding context.
Huon Wilson [Fri, 27 Jun 2014 11:55:11 +0000 (21:55 +1000)]
Remove/refactor some .unwraps.
Many of these had some precondition being changed that guaranteed they'd
never happen, but could be expressed to just avoid the `.unwrap`
entirely (easier to check).
Other `Option` unwraps were changed to have a mildly more informative
error message by using `.expect`.
Huon Wilson [Fri, 27 Jun 2014 11:54:09 +0000 (21:54 +1000)]
s/,/:/ in what appears to be JSON.
Samuel Chase [Fri, 27 Jun 2014 10:47:34 +0000 (16:17 +0530)]
Remove superfluous newline
Samuel Chase [Fri, 27 Jun 2014 10:43:55 +0000 (16:13 +0530)]
Add command line help text for new subcommand 'cargo test'
bors [Fri, 27 Jun 2014 04:45:52 +0000 (04:45 +0000)]
auto merge of #72 : Arcterus/cargo/master, r=alexcrichton
Now Cargo should give a normal error message rather than a task failure when encountering an SSH URL as a dependency.
Arcterus [Fri, 27 Jun 2014 03:51:25 +0000 (20:51 -0700)]
Error out on ssh dependencies (fixes #55)
bors [Fri, 27 Jun 2014 03:36:24 +0000 (03:36 +0000)]
auto merge of #70 : alexcrichton/cargo/buildbot, r=wycats
* The installation script was modified to recognize when its running on windows,
as well as tweaking how it downloads and installs snapshots. The goal here was
to make the script runnable on buildbot for mac/linux/windows with 32/64 bit
options on mac/linux.
* The installation script now install rustc to `rustc/bin` in the local
directory to have parallel builds on buildbot.
* The tests now store all their temporary state locally in the build directory
to enable parallel builds on buildbot.
* A shell test is ignored which assumed the presence of a TTY output.
Alex Crichton [Wed, 25 Jun 2014 23:31:57 +0000 (16:31 -0700)]
Prepare for buildbot automation
* The installation script was modified to recognize when its running on windows,
as well as tweaking how it downloads and installs snapshots. The goal here was
to make the script runnable on buildbot for mac/linux/windows with 32/64 bit
options on mac/linux.
* The installation script now install rustc to `rustc/bin` in the local
directory to have parallel builds on buildbot.
* The tests now store all their temporary state locally in the build directory
to enable parallel builds on buildbot.
* A shell test is ignored which assumed the presence of a TTY output.
Yehuda Katz + Carl Lerche [Fri, 27 Jun 2014 00:10:00 +0000 (17:10 -0700)]
Fix temporary error message to be clearer
Yehuda Katz + Carl Lerche [Thu, 26 Jun 2014 23:51:37 +0000 (16:51 -0700)]
100 chars
Tim Carey-Smith [Thu, 26 Jun 2014 22:14:31 +0000 (15:14 -0700)]
Add cargo test
Yehuda Katz [Wed, 25 Jun 2014 23:02:24 +0000 (16:02 -0700)]
Merge pull request #64 from alexcrichton/no-recompile-nested-deps
Don't recompile nested deps too frequently
Alex Crichton [Wed, 25 Jun 2014 18:53:19 +0000 (11:53 -0700)]
Don't recompile nested deps too frequently
When compiling a package with a nested dependency, any modification to the outer
package would trigger a recompilation of the inner package. This commit alters
the fingerprint() method to take a PackageId to query about the location of a
package and only lookup the files relevant to that package.
The dependency structure of a PathSource is now everything rooted at the
original Cargo.toml minus all subdirectories which contain a Cargo.toml
Yehuda Katz [Wed, 25 Jun 2014 18:56:40 +0000 (11:56 -0700)]
Merge pull request #56 from alexcrichton/fix-windows-tests
Fix all tests on windows
Alex Crichton [Wed, 25 Jun 2014 05:09:23 +0000 (22:09 -0700)]
Ignore \r in output matching
Windows occasionally has \r\n while everywhere else has \n. Instead of worrying
about the difference, just replace all instances of \r with nothing and rely on
matching against \n.
Alex Crichton [Wed, 25 Jun 2014 05:06:11 +0000 (22:06 -0700)]
Fix lots of windows tests
* Add a convenience method bin() for generating the name of a binary. On windows
this remembers to append `.exe`.
* Stop executing relative paths to binaries and relying on PATH. This is
suffering from rust-lang/rust#15149 and failing to spawn processes on windows.
Additionally, this allows the tests to work with a pre-installed cargo becuase
the freshly built executables are precisely specified.
* A new function, escape_path(), was added for tests. When generated source
files with paths, this function needs to be called to properly escape the
\-character that appears in windows path names. Without this function we would
be generating invalid TOML and rust.
Alex Crichton [Wed, 25 Jun 2014 05:05:33 +0000 (22:05 -0700)]
Switch the process builder to starting from ToCStr
This is the same as the libstd Command builder, and will soon be used in the
tests for spawning processes on windows.
Alex Crichton [Wed, 25 Jun 2014 05:04:57 +0000 (22:04 -0700)]
Fix rm_rf on windows
Apparently git checkouts have objects in the database with permissions 444 which
need to be changed to something with a write permission before removal.
Alex Crichton [Wed, 25 Jun 2014 05:04:13 +0000 (22:04 -0700)]
Disable terminal tests on windows
The windows terminal does not use terminfo and is much different, so these tests
will fail on windows or actually write to the console.
Alex Crichton [Wed, 25 Jun 2014 05:02:21 +0000 (22:02 -0700)]
Move from all-URL to Path/URL enum
On windows a path cannot be represented as a file:// URL because of the
backslashes and colons in the file name. This causes all of the tests which rely
on git to fail on windows. This commit changes the representation of the
location of a package to be an enum, Location, with two variants: Remote and
Local.
When parsing Cargo.toml, all locations which begin with the string "file:" have
that prefix stripped and are then interpreted as Local packages. Everything else
is parsed as a URL and used as a Remote package.
Alex Crichton [Wed, 25 Jun 2014 05:01:02 +0000 (22:01 -0700)]
Fix the toml-rs build location
Alex Crichton [Tue, 24 Jun 2014 13:54:37 +0000 (06:54 -0700)]
Use correct path separator on windows
Alex Crichton [Wed, 25 Jun 2014 17:40:06 +0000 (13:40 -0400)]
Merge pull request #63 from dtrebbien/patch-update-toml-rs
Update libs/toml-rs
Daniel Trebbien [Wed, 25 Jun 2014 17:10:21 +0000 (13:10 -0400)]
Update libs/toml-rs
Include alexcrichton/toml-rs@
66c8348
Alex Crichton [Wed, 25 Jun 2014 13:32:09 +0000 (09:32 -0400)]
Merge pull request #59 from mcpherrinm/nobloat
Delete tests binary, which doesn't belong
Alex Crichton [Wed, 25 Jun 2014 13:16:43 +0000 (09:16 -0400)]
Merge pull request #53 from huonw/version-error
Handle misformatted versions with a nicer error message.
Huon Wilson [Wed, 25 Jun 2014 01:48:38 +0000 (11:48 +1000)]
Handle misformatted versions with a nicer error message.
Carl Lerche [Tue, 24 Jun 2014 22:50:15 +0000 (15:50 -0700)]
Rename make distclean -> clean-all
Yehuda Katz [Tue, 24 Jun 2014 22:23:03 +0000 (15:23 -0700)]
Add support for branch/tag/rev options
Yehuda Katz [Tue, 24 Jun 2014 20:37:28 +0000 (13:37 -0700)]
Update README.md
Yehuda Katz [Tue, 24 Jun 2014 20:34:40 +0000 (13:34 -0700)]
Merge pull request #49 from o11c/install-paths
Correct installation to follow standards
Yehuda Katz [Tue, 24 Jun 2014 20:29:56 +0000 (13:29 -0700)]
Merge pull request #48 from gilles-leblanc/issue40
Adds .vagrant files to .gitignore
Gilles Leblanc [Tue, 24 Jun 2014 16:29:17 +0000 (12:29 -0400)]
Removes vagrant files from project
Fixes #40
Brian Anderson [Tue, 24 Jun 2014 19:50:19 +0000 (12:50 -0700)]
Merge pull request #50 from alexcrichton/license
Add the standard Rust Apache/MIT license
Alex Crichton [Tue, 24 Jun 2014 15:10:31 +0000 (08:10 -0700)]
Add the standard Rust Apache/MIT license
This copies the same Apache and MIT license files from the rust-lang/rust
repository to the cargo repository. It notable retains the same copyright line
as the rust repository:
Copyright (c) 2014 The Rust Project Developers
The COPYRIGHT file from the rust repository was not copied over as it looked
like it mainly contained information about third party dependencies, which cargo
does not have yet.
The wording at the end of the rust repository's README.md was also copied over
to cargo's README.md with tweaks to not mention COPYRIGHT and third-party BSD
licenses.
Closes #34
Ben Longbons [Tue, 24 Jun 2014 18:10:27 +0000 (11:10 -0700)]
Correct installation to follow standards
Alex Crichton [Tue, 24 Jun 2014 13:44:47 +0000 (06:44 -0700)]
Clarify `make install` exists as a target
Closes #39
Yehuda Katz [Tue, 24 Jun 2014 06:09:03 +0000 (23:09 -0700)]
Update README.md
Yehuda Katz [Tue, 24 Jun 2014 05:49:11 +0000 (22:49 -0700)]
Merge pull request #31 from alexcrichton/hotfix-windows2
Work around \-characters on Windows for now